home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
edo
/
rex
/
deentest.bas
< prev
next >
Wrap
BASIC Source File
|
1994-06-01
|
2KB
|
31 lines
10 'Encode-Decode Test Program
20 CLEAR ,,1024,970000,68192:DEFINT A-Z:LOADM "h:bas_lib.rex",0:LOADM "h:slide.rex",8192:BL=0:SL=8192
30 DIM TBUF%(163839),IB%(163839),GBP%(511):DEF FNSKEY&(A&)=CALLM(BL,8):DEF FNFS&(F$)=CALLM(0,14,VARPTR(F$))
40 PRINT "get started! (E : Encode / D : Decode)":A$=INPUT$(1):IF INSTR("EeDd",A$)=0 THEN 50 ELSE IF A$="D" OR A$="d" THEN *DECODE
50 *ENCODE:F$="a:\sample.tif"+CHR$(0):FO$="a:\sample.cmp"+CHR$(0)
60 RSIZE&=FNFS&(F$):IF RSIZE&<0 THEN *ERROR
70 IF RSIZE&>(163839+1)*2 THEN PRINT "filesize too big!!":END
80 A&=CALLM(BL,12,&H14,VARPTR(TBUF%(0)),VARPTR(F$),0,RSIZE&)
90 IF A&<0 THEN *ERROR
100 A&=CALLM(SL,0,VARPTR(GBP%(0)),VARPTR(TBUF%(0)),RSIZE&,1024,PEEK(VARPTR(FO$),4),1) '圧縮
110 IF A&<1 THEN *ENCODE_ERROR
120 A&=CALLM(BL,11,&H14,VARPTR(RSIZE&),VARPTR(FO$),-1,4) '復元の為に元のデータサイズを付加する
130 END
200 *DECODE:FI$="a:\sample.cmp"+CHR$(0):FD$="a:\samplorg.tif"+CHR$(0)
210 OSIZE&=0:RSIZE&=FNFS&(FI$):IF RSIZE&<0 THEN *ERROR
220 A&=CALLM(BL,12,&H14,VARPTR(OSIZE&),VARPTR(FI$),RSIZE&-4,4) '元のデータのサイズを読み込む
230 IF A&<0 THEN *ERROR
240 A&=CALLM(BL,12,&H14,VARPTR(IB%(0)),VARPTR(FI$),0,RSIZE&-4) '圧縮されたデータを読み込む
250 IF A&<0 THEN *ERROR
260 A&=CALLM(SL,1,VARPTR(TBUF%(0)),VARPTR(IB%(0)),OSIZE&,0,0,RSIZE&-4) '復元
270 IF A&<>OSIZE& THEN PRINT "Illegal Data Format":END
280 A&=CALLM(BL,16,&H14,VARPTR(TBUF%(0)),VARPTR(FD$),0,OSIZE&) '復元データ書き出し
290 END
500 *ERROR
510 PRINT USING "REXルーチンからエラーが返されました CODE(########)";A& AND &H7FFFFFFF;
520 END
550 *ENCODE_ERROR
560 IF A&=-2 THEN PRINT "圧縮後のデータサイズが、元のデータより大きくなりました"
570 IF A&=0 THEN PRINT "元データが短すぎます"
580 GOTO *ERROR